#include"thread.hpp"

#include<unordered_map>
#include<memory>

#define NUM 10
using thread_ptr=std::shared_ptr<threadmodule::thread>;
int main()
{
    std::unordered_map<std::string,thread_ptr> threads;
    for(int i=0;i<NUM;i++)
    {
        thread_ptr t_ptr=std::make_shared<threadmodule::thread>([](){
            while(true){
                std::cout<<"hello world"<<std::endl;
                sleep(1);
            }
        });
        threads[t_ptr->name()]=t_ptr;
    }

    for(auto& e:threads)
    {
        e.second->start();
    }
    sleep(5);
    for(auto& e:threads)
    {
        e.second->cancel();
    }
    sleep(5);
    for(auto& e:threads)
    {
        e.second->join();
    }
    sleep(5);
}

// int main()
// {
//     threadmodule::thread t([](){
//         while(true){
//             std::cout<<"hello world"<<std::endl;
//             sleep(1);
//         }
//     });
//     t.start();
//     sleep(5);
//     t.cancel();
//     sleep(5);
//     t.join();   
//     return 0;
// }